import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import path from 'path'

// https://vitejs.dev/config/
export default defineConfig(({ mode }) => {
  // 加载环境变量
  const env = loadEnv(mode, process.cwd())
  
  return {
    plugins: [vue()],
    // 路径别名配置
    resolve: {
      alias: {
        '@': path.resolve(__dirname, './src')
      }
    },
    
    // 开发服务器配置
    server: {
      port: 8080, // 开发服务器端口
      open: true, // 自动打开浏览器
      cors: true, // 允许跨域
      
      // 接口代理配置
      proxy: {
        // 匹配以 /api 开头的请求
        '/api': {
          target: env.VITE_API_BASE_URL, // 目标接口地址（从环境变量获取）
          changeOrigin: true, // 开启跨域
          rewrite: (path) => path.replace(/^\/api/, ''), // 移除请求路径中的 /api 前缀
          
          // 可选：配置代理的其他选项
          // 代理 WebSocket
          // ws: true,
          
          // 代理超时设置
          // timeout: 5000,
          
          // 对代理结果进行拦截处理
          // configure: (proxy, options) => {
          //   // proxy 是 http-proxy 实例
          // }
        },
        
        // 可以配置多个代理
        '/other-api': {
          target: env.VITE_OTHER_API_URL,
          changeOrigin: true,
          rewrite: (path) => path.replace(/^\/other-api/, '')
        }
      }
    },
    
    // 生产环境构建配置
    build: {
      outDir: 'dist',
      sourcemap: mode === 'development', // 开发环境生成sourcemap
      rollupOptions: {
        // 生产环境打包优化配置
        output: {
          chunkFileNames: 'js/[name]-[hash].js',
          entryFileNames: 'js/[name]-[hash].js',
          assetFileNames: '[ext]/[name]-[hash].[ext]'
        }
      }
    }
  }
})
